<?php
App::uses('ReviewsController', 'Controller');

class TestReviewsController extends ReviewsController {

	public $autoRender = false;

	public function redirect($url, $status = null, $exit = true) {
		$this->redirectUrl = $url;
	}
}

class ReviewsControllerTestCase extends ControllerTestCase {

	public $fixtures = array('app.review', 'app.usuario');

	public function setUp() {
		parent::setUp();
		$this->Review = new TestReviewsController();
		$this->Usuario = ClassRegistry::init('Usuario');
		$this->Review->constructClasses();
		$this->Review->Session->initialize($this->Review);
		$this->Review->Auth->initialize($this->Review);
		$usuario = $this->Usuario->find('first', array('conditions'=>array('id'=>1), 'recursive'=>-1));
		$this->Review->Auth->login($usuario['Usuario']);
		
	}
	
	public function testMeusReviews(){
		$expected = array(
						array('Review' => array(
				        	'id' => 2,
				        	'produto_id' => 1,
				        	'usuario_id' => 1,
				        	'texto' => 'Esse é um produto muito bom!',
				        	'numero_votos' => 10,
				        	'media_votos' => 5,
				        	'curtidos'=>100,
				        	'created'=>'2020-01-10 09:39:23'
        				)),
				        array('Review' => array(
				        	'id' => 3,
				        	'produto_id' => 1,
				        	'usuario_id' => 1,
				        	'texto' => 'Esse é um produto muito bom!',
				        	'numero_votos' => 10,
				        	'media_votos' => 5,
				        	'curtidos'=>100,
				        	'created'=>'2020-01-10 08:39:23'
                        ))
                );
                
		$result = $this->testAction('/reviews/meus_reviews/teste', array('return'=>'vars'));
		$this->assertEquals($expected, $result['dados']);
	}
	
	public function testLerErroVazio(){
		$this->setExpectedException('NotFoundException');
		$this->testAction('reviews/ler');
	}
	
	public function testLerErroNaoExiste(){
		$this->setExpectedException('NotFoundException');
		$this->testAction('reviews/ler/99999/-1');
	}
	
	public function testLerCorreto(){
		$expected = array('Review'=>array(
        	'id' => 1,
        	'produto_id' => 1,
        	'usuario_id' => 2,
        	'texto' => 'Esse é um produto muito bom!',
        	'numero_votos' => 10,
        	'media_votos' => 5,
        	'curtidos'=>100,
        	'created'=>'2020-01-10 10:39:23'
        ));
		$result = $this->testAction('reviews/ler/1/-1', array('return'=>'vars'));
		$this->assertEquals($expected, $result['dados']);
	}

	public function tearDown() {
		$this->Review->Auth->logout();
		unset($this->Review);
		parent::tearDown();
	}
}
